package thinking.in.spring.boot.example.enable;

import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;

import java.util.Map;

/**
 * @author : wenchao.long
 * @date : Created in 2025-06-06 下午 8:28 周五
 * @description :
 */
public class ServerImportSelect implements ImportSelector {
	@Override
	public String[] selectImports(AnnotationMetadata importingClassMetadata) {
		// 读取EnableServer中所有的属性方法，本例中仅有type()属性方法
		// 其中key为属性方法的名称，value为属性方法的返回对象
		Map<String, Object> annotationAttributes = importingClassMetadata.getAnnotationAttributes(EnableServer.class.getName());
		// 获取名为“type”的属性方法，并且强制转化为Server.Type类型
		Server.Type type = (Server.Type) annotationAttributes.get("type");
		// 导入的类名称数组
		String[] importClassNames = new String[0];
		switch (type) {
			case HTTP:
				importClassNames = new String[]{HttpServer.class.getName()};
				break;
			case FTP:
				importClassNames = new String[]{FtpServer.class.getName()};
				break;
		}
		return importClassNames;
	}
}
